Infura の JSON RPC API で Ethereum アドレスの残高を取得
はじめに
Geth と呼ばれる Ethreum クライアントは、JSON RPC API を提供することができます。
JSON RPC API を使用することで、Geth を実行せずに、外部のサーバ(ノード)を使用して、Ether の残高を取得したり、トランザクションを投げたりすることができます。
ただし、JSON RPC API を提供しているサーバが返す値を読む形になるので、そのサーバを信用する必要があります。
通常は、自らが所有するサーバの JSON RPC API を使用することが望ましいと思いますが、この記事では Infura というサービスが提供する JSON RPC API を使用します。 Infura のサーバ上で動いている Geth に、API 経由でアクセスするといった形になります。
Infura に登録して API Key 取得
Infura を使用するために、API Key を取得する必要があります。
curl で JSON RPC API にアクセス
今回は Ethereum アドレスの残高を知りたいので、Geth の JSON RPC API eth_getBalance を使用します。
API に渡すパラメータ
DATA: 残高を取得したい Ethereum アドレス
QUANTITY|TAG: ブロックの番号または、"latest" つまり最新のブロックを指定
code:params.json
"params" : [
"0xF02c1c8e6114b1Dbe8937a39260b5b0a374432bB",
"latest"
]
リクエストのサンプル
実際に使用する際は、次の箇所を変更してください
YOUR_API_KEY の部分を、自分の API Key に変更してください。
アドレス 0xF02c1c8e6114b1Dbe8937a39260b5b0a374432bB を、残高を調べたいアドレスに変更してください。
code:request
curl -i -X POST \
-H "Content-Type: application/json" \
レスポンスのサンプル
code:response
HTTP/2 200
date: Mon, 30 Apr 2018 18:21:08 GMT
content-type: application/json
content-length: 55
server: nginx/1.10.3 (Ubuntu)
vary: Origin
{"jsonrpc":"2.0","id":1,"result":"0x2453625cffc4f000"}
この result の値が Ethereum アドレスの残高です。
この値は16進数なので、次のようなコマンド等で10進数に直すと wei の値になります。
$ echo $((16#2453625cffc4f000))
$ # => 2617543960000000000
1 Ether = 1000000000000000000 Wei なので、今回は 2617543960000000000 を 1000000000000000000 で割った値 2.61754396 が Ethereum アドレスの残高になります。
参考